/**
* Copyright 2009 ATG DUST Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and limitations under the License.
*/
package atg.adapter.gsa;
/**
* The purpose of this class is to map from a the database specific type name
* for a column to the <code>java.sql.Types</code> for that column. Given a
* DatabaseTableInfo for a given database it will return the jdbc type for the
* supported GSA types.
*
* @version $Id: //test/UnitTests/base/main/src/Java/atg/adapter/gsa/DatabaseTypeNameToJDBC.java#2 $
* @author adamb
* @see java.sql.Types
*/
public class DatabaseTypeNameToJDBC {
public DatabaseTableInfo mTableInfo = null;
public static final int UNKNOWN = -9999;
// -------------------------------
/**
* Creates a new instance of this class initialized with the given
* DatabaseTableInfo object.
*
* @param pTableInfo
*/
public DatabaseTypeNameToJDBC(DatabaseTableInfo pTableInfo) {
mTableInfo = pTableInfo;
}
// -------------------------------
/**
* Given a database specific type name, returns the matching
* <code>java.sql.Types</code> constant. If there is no suitable match this
* method returns the constant <code>UNKNOWN</code>.
*
* @param pTypeName
* @return
*/
public int databaseTypeNametoJDBCType(String pTypeName) {
// Walk the DatabaseTableInfo and do a comparison.
if (mTableInfo.mVarcharType.equals(pTypeName)) {
return java.sql.Types.VARCHAR;
} else if (mTableInfo.mIntType.equals(pTypeName)) {
// Fix for MS SQLServer
if("NUMERIC".equals(pTypeName)){
return java.sql.Types.NUMERIC;
}else{
return java.sql.Types.INTEGER;
}
} else if (mTableInfo.mBinaryType.equals(pTypeName)) {
return java.sql.Types.BLOB;
} else if (mTableInfo.mLongVarcharType.equals(pTypeName)) {
return java.sql.Types.LONGVARCHAR;
} else if (mTableInfo.mTimestampType.equals(pTypeName)) {
return java.sql.Types.TIMESTAMP;
} else if (mTableInfo.mCharType.equals(pTypeName)) {
return java.sql.Types.CHAR;
} else if (mTableInfo.mDateType.equals(pTypeName)) {
return java.sql.Types.DATE;
} else if (mTableInfo.mDecimalType.equals(pTypeName)) {
return java.sql.Types.DECIMAL;
} else
return UNKNOWN;
}
}